From 32326f826ffacd525d62a8a11d66f017a7d8ebe2 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 24 Oct 2014 18:38:15 -0400 Subject: [PATCH] X11: Don't assume all displays are X11 displays When iterating over the list of displays gotten from the display manager, we have to check if what we got is actually an X11 display. --- gdk/x11/gdkdisplay-x11.c | 8 ++++++-- gdk/x11/gdkmain-x11.c | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c index 064b56f4d2..a964e2ae73 100644 --- a/gdk/x11/gdkdisplay-x11.c +++ b/gdk/x11/gdkdisplay-x11.c @@ -1947,7 +1947,8 @@ gdk_x11_lookup_xdisplay (Display *xdisplay) for (l = list; l; l = l->next) { - if (GDK_DISPLAY_XDISPLAY (l->data) == xdisplay) + if (GDK_IS_X11_DISPLAY (l->data) && + GDK_DISPLAY_XDISPLAY (l->data) == xdisplay) { display = l->data; break; @@ -2801,7 +2802,10 @@ gdk_x11_set_sm_client_id (const gchar *sm_client_id) displays = gdk_display_manager_list_displays (gdk_display_manager_get ()); for (l = displays; l; l = l->next) - set_sm_client_id (l->data, sm_client_id); + { + if (GDK_IS_X11_DISPLAY (l->data)) + set_sm_client_id (l->data, sm_client_id); + } g_slist_free (displays); } diff --git a/gdk/x11/gdkmain-x11.c b/gdk/x11/gdkmain-x11.c index 22c7b95519..9ab7c243b2 100644 --- a/gdk/x11/gdkmain-x11.c +++ b/gdk/x11/gdkmain-x11.c @@ -279,7 +279,8 @@ gdk_x_error (Display *xdisplay, { GdkX11Display *gdk_display = displays->data; - if (xdisplay == gdk_display->xdisplay) + if (GDK_IS_X11_DISPLAY (gdk_display) && + xdisplay == gdk_display->xdisplay) { error_display = GDK_DISPLAY (gdk_display); g_slist_free (displays); -- 2.30.2